﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Company.BLL.SXXK.ThanhKhoan;
using Janus.Windows.GridEX;
using Company.BLL;
namespace Company.Interface.SXXK
{
    public partial class TheoDoiHoSoThanhLyForm : BaseForm
    {
        LanThanhLyCollection collection;
        public TheoDoiHoSoThanhLyForm()
        {
            InitializeComponent();
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            // Xây dựng điều kiện tìm kiếm.
            string where = "1 = 1";
            where += string.Format(" AND MaHaiQuan = '{0}'", donViHaiQuanControl1.Ma);

            if (txtSoTiepNhan.TextLength > 0)
            {
                where += " AND SoHoSo = " + txtSoTiepNhan.Value;
            }

            if (txtNamTiepNhan.TextLength > 0)
            {
                where += " AND NamThanhLy = " + txtNamTiepNhan.Value;
            }

            // Thực hiện tìm kiếm.            
            LanThanhLyBase ltl = new LanThanhLyBase();
            collection = ltl.SelectCollectionDynamic(where, "");
            dgList.DataSource = collection;
        }

        private void btnGetListFromHQ_Click(object sender, EventArgs e)
        {
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            try
            {
                this.Cursor = Cursors.WaitCursor;                
                LanThanhLyBase.DongBoDuLieuHaiQuan(donViHaiQuanControl1.Ma, GlobalSettings.MA_DON_VI);
                this.Cursor = Cursors.Default;               
                this.ShowMessage("Cập nhật thành công", false);
                this.btnSearch_Click(null, null);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                this.ShowMessage("Có lỗi: " + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void cmMain_CommandClick(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "NhanDuLieu":
                    this.DongBoHoSoThanhLy();
                    break;
                case "DongBoToKho":
                    this.DongBoNPLTonKho();
                    break;
            }
        }
        private void DongBoHoSoThanhLy()
        {
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            bool ok = true;
            int k = 0;
            try
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        LanThanhLyBase lanthanhly = (LanThanhLyBase)i.GetRow().DataRow;
                        try
                        {
                            k++;
                            LanThanhLyBase.DongBoDuLieuHaiQuan(donViHaiQuanControl1.Ma, GlobalSettings.MA_DON_VI, lanthanhly.LanThanhLy);
                        }
                        catch
                        {
                            this.Cursor = Cursors.Default;
                            ok = false;
                            string message = "";
                            if (k == items.Count)
                                message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi không";
                            else
                                message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi và \ntiếp tục nhận dữ liệu của các bản ghi tiếp không";
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {
                                if (k < items.Count)
                                    ok = true;
                                else
                                    ok = false;
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.HO_SO_THANH_KHOAN;
                                hd.TrangThai = TrangThaiXuLy.DA_DUYET;
                                hd.ChucNang = ChucNang.DONG_BO_DU_LIEU;
                                hd.LanThanhLy = lanthanhly.LanThanhLy;
                                hd.MaHaiQuan = donViHaiQuanControl1.Ma;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }
                        }
                    }
                }
                this.Cursor = Cursors.Default;
                if (ok)
                    ShowMessage("Nhận dữ liệu thành công! ", false);
                this.btnSearch_Click(null, null);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                this.ShowMessage("Có lỗi: " + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        private void DongBoNPLTonKho()
        {
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            bool ok = true;
            int k = 0;
            try
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        LanThanhLyBase lanthanhly = (LanThanhLyBase)i.GetRow().DataRow;
                        try
                        {
                            k++;
                            LanThanhLyBase.GetNPLTonKho(donViHaiQuanControl1.Ma, GlobalSettings.MA_DON_VI, lanthanhly.LanThanhLy);
                        }
                        catch
                        {
                            this.Cursor = Cursors.Default;
                            ok = false;
                            string message = "";
                            if (k == items.Count)
                                message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được!\nBạn có muốn đưa vào hàng đợi không ?";
                            else
                                message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được!\nBạn có muốn đưa vào hàng đợi và \ntiếp tục nhận dữ liệu của các bản ghi tiếp không ?";
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {
                                if (k < items.Count)
                                    ok = true;
                                else
                                    ok = false;
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.HO_SO_THANH_KHOAN;
                                hd.TrangThai = TrangThaiXuLy.DA_DUYET;
                                hd.ChucNang = ChucNang.DONG_BO_DU_LIEU;
                                hd.LanThanhLy = lanthanhly.LanThanhLy;
                                hd.MaHaiQuan = donViHaiQuanControl1.Ma;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }
                        }
                    }
                }
                this.Cursor = Cursors.Default;
                if (ok)
                    ShowMessage("Nhận dữ liệu thành công! ", false);
                //this.btnSearch_Click(null, null);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                this.ShowMessage("Có lỗi: " + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        private void TheoDoiHoSoThanhLyForm_Load(object sender, EventArgs e)
        {
            btnSearch_Click(null, null);
        }

        private void dgList_RowDoubleClick(object sender, RowActionEventArgs e)
        {           
            XemHoSoThanhLyForm f = new XemHoSoThanhLyForm();
            f.Name="XemTL"+e.Row.Cells["LanThanhLy"].Text;
            Form[] forms = this.ParentForm.MdiChildren;
            for (int i = 0; i < forms.Length; i++)
            {
                if (forms[i].Name.ToString().Equals(f.Name))
                {
                    forms[i].Activate();
                    return;
                }
            }

            f.LanTL = new LanThanhLyBase();
            f.LanTL.LanThanhLy = Convert.ToInt32(e.Row.Cells["LanThanhLy"].Text);
            f.LanTL.MaHaiQuan = donViHaiQuanControl1.Ma;
            f.LanTL.MaDoanhNghiep = GlobalSettings.MA_DON_VI;
            f.MdiParent = this.ParentForm;
            f.Show();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            if (e.Row.Cells["NgayKetThuc"].Text != "")
            {
                DateTime date = Convert.ToDateTime(e.Row.Cells["NgayKetThuc"].Text);
                if (date.Year <= 1900)
                    e.Row.Cells["NgayKetThuc"].Text = "";
            }
        }

        private void NhanDuLieuCTMenu_Click(object sender, EventArgs e)
        {
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;                        
            try
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                bool ok = true;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        LanThanhLyBase lanthanhly = (LanThanhLyBase)i.GetRow().DataRow;
                        try
                        {                            
                            LanThanhLyBase.DongBoDuLieuHaiQuan(donViHaiQuanControl1.Ma, GlobalSettings.MA_DON_VI, lanthanhly.LanThanhLy);
                            int trangthaicu = lanthanhly.TrangThai;
                            lanthanhly.Load();
                            this.Cursor = Cursors.Default;
                            if (trangthaicu == lanthanhly.TrangThai)
                                ShowMessage("Nhận dữ liệu thành công! ", false);
                            else
                            {
                                ok = false;
                                if (lanthanhly.TrangThai == 401)
                                {                                    
                                    ShowMessage("Hải quan đã đóng hồ sơ! ", false);
                                }
                                else if (lanthanhly.TrangThai == 0)
                                {                                    
                                    ShowMessage("Hải quan đang nhập liệu! ", false);
                                }
                                else if (lanthanhly.TrangThai == 300)
                                {                                    
                                    ShowMessage("Hải quan đang thanh lý! ", false);
                                }
                                else if (lanthanhly.TrangThai == 400)
                                {                                    
                                    ShowMessage("Hoàn thành thanh lý! ", false);
                                }                                
                            }                            
                        }
                        catch
                        {
                            this.Cursor = Cursors.Default;                            
                            string message = "";                          
                            message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi không";
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {                               
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.HO_SO_THANH_KHOAN;
                                hd.TrangThai = TrangThaiXuLy.DA_DUYET;
                                hd.ChucNang = ChucNang.DONG_BO_DU_LIEU;
                                hd.LanThanhLy = lanthanhly.LanThanhLy;
                                hd.MaHaiQuan = donViHaiQuanControl1.Ma;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }
                        }
                        break;
                    }
                }
                if(!ok)
                    this.btnSearch_Click(null, null);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                this.ShowMessage("Có lỗi: " + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void DongBoDuLieuTon_Click(object sender, EventArgs e)
        {
            WSForm wsForm = new WSForm();
            wsForm.ShowDialog(this);
            if (!wsForm.IsReady) return;
            bool ok = true;
            int k = 0;
            try
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        LanThanhLyBase lanthanhly = (LanThanhLyBase)i.GetRow().DataRow;
                        try
                        {                            
                            LanThanhLyBase.GetNPLTonKho(donViHaiQuanControl1.Ma, GlobalSettings.MA_DON_VI, lanthanhly.LanThanhLy);
                            this.Cursor = Cursors.Default;                            
                            ShowMessage("Nhận dữ liệu thành công! ", false);
                        }
                        catch
                        {
                            this.Cursor = Cursors.Default;                          
                            string message = "";                           
                            message = "Lần thanh lý " + lanthanhly.LanThanhLy.ToString() + " không nhận dữ liệu về được!\nBạn có muốn đưa vào hàng đợi không ?";
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {                               
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.HO_SO_THANH_KHOAN;
                                hd.TrangThai = TrangThaiXuLy.DA_DUYET;
                                hd.ChucNang = ChucNang.DONG_BO_DU_LIEU;
                                hd.LanThanhLy = lanthanhly.LanThanhLy;
                                hd.MaHaiQuan = donViHaiQuanControl1.Ma;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }
                        }
                        break;
                    }
                }             
                //this.btnSearch_Click(null, null);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                this.ShowMessage("Có lỗi: " + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

    }
}